import unittest

"""
 @author adun
 @date 2020/10/30 10:53
 lambda 函数是一种小的匿名函数。

lambda 函数可接受任意数量的参数，但只能有一个表达式。

语法
lambda arguments : expression
"""


class MyTestCase(unittest.TestCase):
    def test_something(self):
        self.assertEqual(True, False)

    # 实例
    # 一个 lambda 函数，它把作为参数传入的数字加 10，然后打印结果：
    def test_add_ten(self):
        x = lambda a: a + 10
        print(x(5))

    # lambda 函数可接受任意数量的参数：
    #
    # 实例
    # 一个 lambda 函数，它把参数 a 与参数 b 相乘并打印结果：
    def test_random_args(self):
        x = lambda a, b: a * b;
        print(x(5,6))

    # ********************************************************
    # 为何使用 Lambda 函数？
    # 当您把 lambda 用作另一个函数内的匿名函数时，会更好地展现 lambda 的强大能力。
    #
    # 假设您有一个带一个参数的函数定义，并且该参数将乘以未知数字：
    #
    # def myfunc(n):
    #   return lambda a : a * n
    # 使用该函数定义来创建一个总是使所发送数字加倍的函数：
    def test_double_lambda(self):
        def myfunc(n):
            return lambda a: a * n

        mydoubler = myfunc(2)
        mytripler = myfunc(3)

        print(mydoubler(11))
        print(mytripler(11))


if __name__ == '__main__':
    unittest.main()
